The Spine Generator is responsible for generating spine nodes. A "spine" defines the center line of a branch or frond, so both branches and fronds are part of the spine generator.
Generation: Frequency and Steps: Number values are set explicitly.
Generation: Frequency and Steps: Number values are computed based on the length of the parent node.
The lowest point on the parent where nodes can occur.
The highest point on the parent where nodes can occur.
The number of nodes generated.
If Generation: Style is set to relative, this integer becomes a float and the actual number of nodes generated is computed based on the length of the parent.
Removes branches systematically after generation (post-balance and stepping).
Scales not only the size of the nodes themselves, but also the size of their children.
If degradation is enabled, the frequency scalar will only affect this generator if it is the topological end of a generator chain (i.e. it has no children).
If degradation is enabled, the frequency scalar will always affect this generator.
If degradation is enabled, the frequency scalar will never affect this generator (useful for something like roots, which often have no children but do not slow down compute).
Nodes have a random orientation.
The first node in each step is centered vertically on its parent.
Each step is re-aligned so the Sweep range is centered vertically on its parent.
If Steps are disabled, the initial generation angle is centered vertically on the parent node instead.
Nodes can be balanced (equally spaced) radially by enabling this property.
Changing the Generation: Frequency or Generation: Step: Number properties will result in positional shifting in order to maintain equal spacing.
The computed angle for each node is offset [+/-] between 0 and this amount.
The arc around the parent node where nodes are eligible.
Balance is applied after the sweep arc is defined.
Each node is rotated this absolute amount from its computed angle.
When enabled, nodes are grouped into lengthwise "steps" along the parent node. Balance, angle offset, and other properties will be applied per step.
Each step contains approximately (Generation: Frequency ÷ Generation: Step: Number) branches.
The number of steps to distribute the computed frequency among.
If Generation: Style is set to relative, this integer becomes a float and the actual number of steps generated is computed based on the length of the parent node.
The maximum amount of lengthwise node spacing allowed from the center of each step to its extents.
The number of nodes per step is equal to the value for generation:frequency, rather than the frequency value being distributed among all the steps.
When enabled, all forces that are checked will act on the generator.
While all forces in the scene are listed in this group, only enabled forces affect this generator.
Click on the colored square to the right of the force name to edit its properties.
When enabled, 2-sided frond geometry is generated along the spine.
Various properties and property groups related to fronds are only made visible if this property is enabled.
When enabled, fully 3D branches are skinned over the spine.
Various properties and property groups related to branches are only made visible if this property is enabled.
When enabled, cap geometry is skinned over open ends of branches, either caused by the radius profile or breaking.
Branches must first be enabled.
Various seed values are used to procedurally generate nodes. Each random number has been separated out into groups of like properties.
Seeds can be incremented with the spinner or chosen at random via the Randomize button. All seeds can be randomized at once with 'Randomize all'.
Scales the number of length, radial, and cap segments uniformly..
Both length and radial segments are computed based on the length and radius of the node, respectively.
Length segments are computed based on the length of the node.
Radial Segments are computed based on the radius of the node.
The maximum fidelity of spines.
Changing accuracy may drastically affect the shape of your spines. Set this value to the maximum desired fidelity early to avoid design losses. Higher values result in slower computes.
The number of segments composing spines.
If Segments: Style is set to relative, this integer becomes a float and the actual number of segments generated is computed based on the length of the parent.
Segments are added and removed adaptively based on the curvature of the branch. Increasing this value increases the angle that must be met for a length segment to survive the optimization.
The number of segments composing the radial cross-section of branches.
If Segments: Style is set to relative, this integer becomes a float and the actual number of segments generated is computed based on the radius of individual nodes.
The number of segments composing the cap geometry of broken or open-ended branches.
If Segments: Style is set to relative, this integer becomes a float and the actual number of segments generated is a function of the radius of individual nodes.
The number of segments composing the fused part of welded branches.
The number of segments composing the Frond: Shape: Contour curve.
Frond segments are added and removed adaptively based on the curvature of the frond. Increasing this value increases the angle that must be met for a frond length segment to survive the optimization.
The length of the spine nodes as distributed along the parent node.
The amount of angle offset from the parent node's growth direction at the point where each node occurs.
Where 0.0 is equal to the parent's direction, 1.0 is an inversion of the parent's direction.
An interpolation between a random "up" direction and absolute (world) "up".
Uniform rotation of each spine. Roll is applied after Spine:Alignment.
The amount of randomness applied to each angle along the spine length.
By entering Node Mode, individual disturbance seeds are exposed and can be randomized.
The sampling rate of the jink behavior.
Jink:Frequency and Jink:Amount work together to make the jink behavior. Either set to 0 nullifies the effect.
The amount to sample the jink behavior.
Jink:Frequency and Jink:Amount work together to make the jink behavior. Either set to 0 nullifies the effect.
The likelihood that any node will "break", resulting in a capped branch at the break spot.
The percentage of the way along any spine where the branch will "break" from break chance.
The likelihood that any node will bifurcate, or "fork" into two spines at the bifurcation spot.
The percentage of the way along the spine where the branch will "fork" from Bifurcation:Chance.
The angle between the two forked halves.
The length of the bifurcating segment (from the previous ring to the crease between the fork).
As the distance approaches the next segment, it can "consume" that segment and increase in length.
Amount to decrease the radius of each bifurcation end branch.
The variance on this value varies the radius for each end independent of its shared base branch.
When enabled, bifurcated branches will generate more children than non-bifurcated branches.
When enabled, fronds geometry will not start until the bifurcation point (fronds will be made on each split after the break).
The amount to retract the crease in the middle of the web.
The width of the crease in the middle of the web.
Amount to retract the outer edges of the base ring.
Whether to break the left, right, or both ends if the break spot lies past the bifurcation spot.
Both Bifurcate and Break must be enabled for a node to utilize Break:Style.
The amount to offset the break spot up or down if it happens on the left end of the bifurcation.
Both 'Bifurcate' and 'Break' must be enabled for the node, as well as Break:Style set to 'left'.
The amount to offset the break spot up or down if it happens on the right end of the bifurcation.
Both 'Bifurcate' and 'Break' must be enabled for the node, as well as Break:Style set to 'right'.
The amount of variation between the cap displacement of each bifurcation end branch.
Both 'Bifurcate' and 'Break' must be enabled for the node, as well as Break:Style set to 'both'.
The width of the frond.
The height of the Frond: Shape: Contour curve.
The frond shape definition. This curve is extruded along the length of the spine.
The Shape: Contour curve is mirrored (over the curve Y-axis) on each side of the frond.
The Shape: Contour curve is interpreted explicitly, allowing non-symmetrical frond shapes.
When enabled, the frond width will increase and decrease relative to spine length.
Fronds are mapped based on surface approximation from the center outwards (maintaining the centerline of the textures).
Fronds are mapped based strictly on surface approximation (mapping may be heavily weighted on one side rather than staying centered).
Fronds are planar mapped face down without respecting surface approximation (may result in texture stretching).
No flipping will occur.
Random nodes will have flipped texture coordinates.
Random nodes will have flipped shapes [see Shape: Contour].
Random nodes may have flipped texture coordinates, shapes, or both.
The percentage along the spine where frond geometry begins.
The percentage along the spine where frond geometry terminates.
Uniform rotation of the frond, applied after spine roll and spine alignment.
The number of frond "blades". Frond blades are instances of the frond shape rotated along the spine.
The radial distance between each frond blade. A value of 1.0 results in equal distance on both sides of the frond.
Requires a frond count greater than 1.
Normals are rotated from the face normal towards the direction the node is growing. A value of 1.0 results in normals facing completely out.
Normals are fanned towards the sides of the frond. Spreading will increase for each Frond: Shape segment approaching the edge of the frond.
Modulates between the standard frond normals (0.0) and the normals as set in the source mesh (1.0).
The Z-depth of mesh fronds are applied based on the shape of the Frond: Shape: Contour.
The Z-depth of mesh fronds are applied in a planar fashion with the up vector defined by the spine's orientation.
Scalar for the Z-depth (height) of mesh fronds.
Frond: Shape: Height value is applied to the deforming surface, not the mesh frond itself.
The radius of the extruded branch skin.
Radius is scaled to the radius profile percentage of the parent node at the point where each branch occurs.
When enabled, the radius can never exceed the radius of its parent at the point where the branch occured.
The amount to bend the normals toward the spine direction.
Normal bending increases exponentially near the base of the branch since light seams occur where branches intersect.
The number of flares around the branch.
An interpolation between equally-spaced and randomly-positioned flares.
The radial spread of each flare.
The distance out from the initial branch radius that the flares will extend.
The distance the flare extends up the spine of each node.
The rotation of the texture coordinates around the center of the cap.
Texture coordinate scale. Larger values zoom in towards the center (clamped at 1.0).
Insets the cap from the branch proper to simulate bark thickness.
A cap border greater than 0.0 results in an extra ring of cap segments.
Extrudes the cap geometry in the direction of the last length segment.
Requires a Cap: Border value greater than 0.0.
The length to extend one side of the cap, creating a slope.
Rotate the slope with Cap:Angle
When enabled, branches will be pushed out and fused to their parent, creating a seamless union between the two.
The percentage to blend between computed branch normals and the normals from the parent branch at the point of welding.
The distance away from the parent branch skin to start the welded branch.
The amount to spread the weld segments towards the end of the parent branch, creating a "web" where the branches meet.
The amount to spread the weld segments towards the start of the parent branch, creating a "web" where the branches meet.
Each layer applies only to branch geometry. Branches have two distinct sets of texture coordinates, 'Base' and 'Detail'.
Show the base layer property set.
Show the detail layer property set.
The detail layer is a superset of the base layer which includes additional Clamp properties. Detail textures must be present in the material to show up on the branch and are masked by the Detail: Diffuse texture's alpha channel.
Both U and V tile are computed based on the length and radius of the node.
U tile is computed based on the radius of the node.
V tile is computed based on the length of the node.
Both U and V tile are set explicitly.
Texture mapping is applied as cylinder before skin disturbance (i.e. displacement, welding, flares).
Texture mapping is applied as cylinder and adjusted before skin disturbance (i.e. displacement, welding, flares).
Texture mapping is applied as cylinder after skin disturbance (i.e. displacement, welding, flares).
The number of times the material tiles around a branch.
If Texture Coordinates: Style is set to relative, this integer becomes a float and the actual value is a function of the radius of individual nodes. The computed U tile value is then rounded to an integer to avoid texture seams.
The number of times the material tiles along the length of a branch.
If Texture Coordinates: Style is set to relative, this integer becomes a float and the actual value is a function of the length of individual nodes.
Maximum possible U offset. Each node receives a random value between 0 and this.
Setting the value to 1.0 ensures totally random U offsets.
Maximum possible V offset. Each node receives a random value between 0 and this.
Setting the value to 1.0 ensures totally random V offsets.
The number of full revolutions to twist the material per V tile.
Each branch twists in a counter-clockwise direction.
Each branch twists the same amount in either a clockwise or counter-clockwise direction.
"Clamping" a detail texture prohibits it from tiling. Use this to make a non-repeating mark that appears on a specific part of a branch.
only available when editing Layer: Detail. Clamping streaks the last row of pixels in the clamped direction. Ensure that the detail mask is transparent at the point where the clamping occurs to avoid visible streaking.
Initial U clamp percentage.
Terminal U clamp percentage.
Initial V clamp percentage.
Terminal V clamp percentage.
Branches, caps and fronds can each have multiple materials to be distributed randomly. Use the button controls to add [+] or remove [-] materials per geometry type.
Named material from the material bank.
Probability that a node will receive this material index (this weight ÷ sum of all weights).
Using multiple branch maps will require additional draw calls in real-time use. Use sparingly for tiling (branch) textures.
A generic, scalable noise pattern is used for displacement.
The material's height map (located in the normal map's alpha channel) is used for displacement.
A named 'displacement map' from the Asset bar is used for displacement.
The displacement source is not exported for real-time use; it is used only as a modeling aid.
Displacement is mapped on top of the existing Layer: Base coordinates. Tile and offset are applied after obtaining the base coordinates.
Ignore the existing coordinates and map displacement explicitly by the other values in this group.
* Only available for branches since caps and fronds have fixed coordinates.
The amount of surface displacement caused by displacement.
The amount to offset the vertices of each branch ring. Jaggedness is necessary for creating realistic breaks when physics are enabled.
Scales the tiling of the displacement source for the jaggedness only. Adjusting this value may be necessary if the displacement map does not have sufficient resolution to offset individual vertices.
The amount to offset the depth of the displacment source. Values greater than one will push the displacment outwards and less than one will bring the displacement in towards the center of the branch.
The number of times displacement is repeated across the U direction of the geometry.
If Displacement: Mapping is set to 'Use base tex coords', this value is a multiplier of the base U tile value.
The number of times displacement is repeated along the length of the geometry.
If Displacement: Mapping is set to 'Use base tex coords', this value is a multiplier of the base V tile value.
Maximum possible U offset. Each node receives a random value between 0 and this.
Setting the value to 1.0 ensures totally random U offsets.
Maximum possible V offset. Each node receives a random value between 0 and this.
Setting the value to 1.0 ensures totally random V offsets.
The number of times displacement is tiled from the center of a cap.
* Replaces separate U and V tile properties for cap geometry.
Rotation offset for displacement texture.
* Applied only to cap geometry.
An offset for the calculated amount of ambient occlusion. Increasing this value lessens the affect of ambient occlusion.
The difference in brightness from the heaviest ambient occlusion to no ambient occlusion.
This value clamps the least amount of ambient occlusion allowed.
This value clamps the most that ambient occlusion can ever darken.
The target optimization amount for the lowest LOD state.
The percentage of overall segments to keep from highest LOD to lowest LOD.
The percentage of length segments to keep from highest LOD to lowest LOD.
The percentage of radial segments to keep from highest LOD to lowest LOD.
The percentage of cap ring segments to keep from highest LOD to lowest LOD.
The percentage of frond shape segments to keep from highest LOD to lowest LOD.
The number of fronds per spine node to keep from highest LOD to lowest LOD.
Requires a frond count greater than 1.
The maximum branch volume allowed from highest LOD to lowest LOD.
The maximum cap area allowed from highest LOD to lowest LOD.
The maximum frond area allowed from highest LOD to lowest LOD.
The percentage of bones to keep from highest LOD to lowest LOD.
Apply secondary wind at this level.
Applying wind at multiple levels may cause branch disconnection.
Each vertex of each branch oscillates along a vector shared by all vertices of the same branch. The Weight is length of that vector. Use the profile curve to distribute movement along the branch.
The left hand side of the profile curve must be zero to avoid branch disconnections.
This value provides an offset into the trigonometric functions used during wind oscillation. These values seldom change but can be modified to prevent neighboring branches from oscillating in unison if necessary (this is usually done in node editing mode).
Controls the direction of the vector along which this branch travels during wind oscillation. These values seldom change but can be modified to prevent neighboring branches from oscillating in the same direction (this is usually done in node editing mode).
Tiles the frond rippling effect across a fronds.
Tiles the frond rippling effect along the fronds.
Controls how much this frond adheres to the frond rippling distance values associated with the fan.
The number of bones is based on the length of the spine.
The number of bones is explicitly set per-node.
The number of bones generated along the length of spines (analogous to Segments: Length)
If Bone Style is set to relative, this integer becomes a float and the actual number of bones generated is a function of the length of individual nodes.
The weight and stiffness of branch geometry in physics calculations.
The percentage to scale the radius of the bones.
The percentage to scale the length of the bones.
The probability of breaking due to physical interaction for the all nodes created from this generator.
No custom cap is used for physics-broken branches.
Select any material from the Asset Editor for use as the cap texture when a branch is broken while physics is enabled.
When enabled, frond geometry is made physical as well.
When enabled, branch geometry will be encased as a convex mesh.